What is csv-stringify?
The csv-stringify npm package is a module that provides the ability to convert arrays or objects into a CSV (Comma-Separated Values) string. It can be used to generate CSV files or strings from JavaScript data structures, supporting both the Node.js stream API and a simple callback-based API.
What are csv-stringify's main functionalities?
Stringifying an array of records
This feature allows you to convert an array of arrays (representing records) into a CSV string. Each sub-array is a row in the CSV output.
const stringify = require('csv-stringify');
const records = [['1', '2', '3'], ['a', 'b', 'c']];
stringify(records, (err, output) => {
if (err) throw err;
console.log(output);
});
Stringifying from a stream
This feature demonstrates how to use csv-stringify with Node.js streams. Data can be piped into the stringify function, which then outputs a CSV formatted stream.
const stringify = require('csv-stringify');
const { Readable } = require('stream');
const records = new Readable({
objectMode: true,
read() {}
});
records.push(['1', '2', '3']);
records.push(['a', 'b', 'c']);
records.push(null);
records.pipe(stringify()).pipe(process.stdout);
Stringifying objects with column headers
This feature allows you to convert an array of objects into a CSV string, including column headers as the first row in the output.
const stringify = require('csv-stringify');
const records = [{ id: '1', name: 'John Doe' }, { id: '2', name: 'Jane Doe' }];
stringify(records, { header: true }, (err, output) => {
if (err) throw err;
console.log(output);
});
Other packages similar to csv-stringify
papaparse
PapaParse is a robust and powerful CSV (character-separated values) parser with a focus on ease of use and performance. It can parse CSV files or strings, convert them to JSON, and provide many advanced features like auto-detection of delimiters. Compared to csv-stringify, PapaParse offers both parsing and stringifying capabilities, whereas csv-stringify is focused only on stringifying.
fast-csv
fast-csv is an npm package that provides parsing and formatting capabilities for CSV data. It is designed to be fast and flexible, allowing for both stream and callback-based APIs. While csv-stringify is specifically for stringifying JavaScript data into CSV format, fast-csv offers both parsing and formatting, making it a more comprehensive solution for working with CSV data.
This package is a stringifier converting records into a CSV text and
implementing the Node.js stream.Transform
API. It also provides the easier
synchronous and callback-based APIs for conveniency. It is both extremely easy
to use and powerful. It was first released in 2010 and is tested against big
data sets by a large community.
Documentation
Main features
- Follow the Node.js streaming API
- Simplicity with the optional callback API
- Support for custom formatters, delimiters, quotes, escape characters and header
- Support big datasets
- Complete test coverage and samples for inspiration
- Only 1 external dependency
- to be used conjointly with
csv-generate
, csv-parse
and stream-transform
- MIT License
Usage
The module is built on the Node.js Stream API. For the sake of simplicity, a
simple callback API is also provided. To give you a quick look, here's an
example of the callback API:
const stringify = require('csv-stringify')
const assert = require('assert')
const input = [ [ '1', '2', '3', '4' ], [ 'a', 'b', 'c', 'd' ] ]
stringify(input, function(err, output) {
const expected = '1,2,3,4\na,b,c,d\n'
assert.strictEqual(output, expected, `output.should.eql ${expected}`)
console.log("Passed.", output)
})
Development
Tests are executed with mocha. To install it, run npm install
followed by npm test
. It will install mocha and its dependencies in your project "node_modules"
directory and run the test suite. The tests run against the CoffeeScript source
files.
To generate the JavaScript files, run npm run build
.
The test suite is run online with
Travis. See the Travis
definition
file to
view the tested Node.js version.
Contributors